// 导入 路由文件
import router from '@/router'
// 导入 vuex对象
import store from '@/store'
// 导入 nprogress 进度条模块及其样式文件
import Nprogress from 'nprogress'
import '/node_modules/nprogress/nprogress.css'

// 设置导航守卫
// 思路：判断有无token
//      有token，
//          进入的是的首页是login页面,跳转至首页
//          进入页面非login页面，正常进入
//    没有token，
//          判断要进入页面是否是白名单（不需要登录的页面：login/404）
//          如果是：正常进入
//          如果不是：跳转至登录页

// 定义无需登录的白名单
const whitePage = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  // 添加进度条，开启进度条
  Nprogress.start()
  if (store.state.user.token) {
    if (to.path.toLowerCase() === '/login') {
      next('/')
    } else {
      // 判断用户信息是否存在,存在继续执行
      if (store.state.user.userInfo.userId) {
        next()
      } else {
        await store.dispatch('user/getUserInfo')
        next()
      }
    }
  } else {
    if (whitePage.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login')
    }
  }
  // 关闭进度条
  Nprogress.done()
})
